/**  
 * All rights Reserved, Designed By www.xiaozhanjiaoyu.cn
 * @Title:  BaiDuAuthService.java   
 * @Package com.component   
 * @Description:    TODO(用一句话描述该文件做什么)   
 * @author: knight.lu     
 * @date:   2018年11月28日 下午1:32:15   
 * @version V1.0 
 * @Copyright: 2018 www.xiaozhanjiaoyu.cn Inc. All rights reserved. 
 * 
 */
package com.component;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
/**   
 * @ClassName:  BaiDuAuthService   
 * @Description:TODO(这里用一句话描述这个类的作用)   
 * @author: knight.lu 
 * @date:   2018年11月28日 下午1:32:15   
 *     
 */
public class BaiDuAuthService {
	
	private static final Logger LOG = LoggerFactory.getLogger(BaiDuAuthService.class);
	
	// 官网获取的 API Key 更新为你注册的
	private static final String clientId = "tfpKPzWIRjKwDO4Y4tSEgT3N";
	// 官网获取的 Secret Key 更新为你注册的
	private static final String clientSecret = "Urdwx51kfeRGhdrbQN4hptxwUTzvzqm0";
	
	//沙盒环境
	public static final String TALK_URL = "https://aip.baidubce.com/rpc/2.0/unit/bot/chat";
	//生产环境  华北 华东 华南
	public static final String BJ_TALK_URL = "https://unit.bj.baidubce.com/rpc/2.0/unit/bot/chat";
	public static final String SU_TALK_URL = "https://unit.su.baidubce.com/rpc/2.0/unit/bot/chat";
	public static final String GZ_TALK_URL = "https://unit.gz.baidubce.com/rpc/2.0/unit/bot/chat";
	
	
	//机器人id
	public static final String BOT_ID = "19119";
	//聊天机器人id
	public static final String CHAT_BOT_ID = "17959";
	//机器人错误
	public static final String BOT_ERROR = "我生病了！";
	//问候
	public static final String BOT_HELLO = "我是小站，有什么可以帮助你的吗？";
	 /**
     * 获取API访问token
     * 该token有一定的有效期，需要自行管理，当失效时需重新获取.
     * @param ak - 百度云官网获取的 API Key
     * @param sk - 百度云官网获取的 Securet Key
     * @return assess_token 示例：
     * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
     */
    public static String getAuth() {
        // 获取token地址
        String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
        String getAccessTokenUrl = authHost
                // 1. grant_type为固定参数
                + "grant_type=client_credentials"
                // 2. 官网获取的 API Key
                + "&client_id=" + clientId
                // 3. 官网获取的 Secret Key
                + "&client_secret=" + clientSecret;
        LOG.info("get token: " + getAccessTokenUrl);
        try {
            URL realUrl = new URL(getAccessTokenUrl);
            // 打开和URL之间的连接
            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
            	LOG.info(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String result = "";
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
            /**
             * 返回结果示例
             */
            LOG.info("result:" + result);
            JSONObject jsonObject = JSONObject.parseObject(result);
            String access_token = jsonObject.getString("access_token");
            return access_token;
        } catch (Exception e) {
        	LOG.error("获取token失败！");
            e.printStackTrace(System.err);
        }
        return null;
    }
}
